Method and apparatus for video decoding using multi-core processor

ABSTRACT

A method and apparatus for deblocking process using multiple processing units are disclosed. The video image is divided into at least two regions. The in-loop filter is applied to block boundaries associated with said at least two regions using multiple processing units. The in-loop filter is re-applied to one or more second block boundaries adjacent to region edge between two regions after applying the in-loop filter to the first block boundaries adjacent to the region edge. Furthermore, at least a first portion of said applying the in-loop filter to the first block boundaries and a second portion of said applying the in-loop filter to the second block boundaries are performed concurrently. The multiple processing units may correspond to multiple processing cores within one processor chip.

CROSS REFERENCE TO RELATED APPLICATIONS

The present invention claims priority U.S. Provisional PatentApplication, No. 61/765,982, filed on Feb. 18, 2013, entitled “Novelcontrol method of video process”. This U.S. Provisional PatentApplication is hereby incorporated by reference in its entirety.

FIELD OF THE INVENTION

The present invention relates to video coding. In particular, thepresent invention relates to in-loop filtering process at blockboundaries in video decoding using a dual-core processor.

BACKGROUND AND RELATED ART

Motion compensated transform coding has been widely adopted in variouscoding standards, where block transform is applied to motion-compensatedresidues. The motion compensated inter-frame coding system also usesintra-frame mode periodically or adaptively. During the coding process,transform coefficients are quantized in order to reduce bitrate andconsequently artifacts are introduced. The artifacts are more visible atboundaries around transform blocks. In order to alleviate the codingartifacts, a technique called deblocking has been developed, whichapplies in-loop filtering across block boundaries adaptively. Thedeblocking technique is also called deblocking filter in the field ofvideo coding.

The H.264 coding standard also adopts block-based motion-compensation,where the deblocking filter is applied to reduce the distortion mostvisible across block boundaries. FIG. 1 shows an exemplary decoding flowused in H.264. The input coded bitstream provided to decoder 100 isprocessed by variable length decoding (VLD) 110. The decoded data isthen processed by Intra block decoding 120 or Inter block decoding 130for reconstruction depending on whether the block is Intra-coded orInter-coded. The reconstructed data is stored and used for motioncompensation (MC) 140 by other frames. In order to improve videoquality, in-loop filtering (LF) 150 is applied to the reconstructedvideo. The in-loop filter is applied across boundaries of 4×4 blocks.The horizontal deblocking filter is applied to vertical block boundariesfirst in the order from left to right and the vertical deblocking filteris then applied to the horizontal boundaries in the order from top tobottom. The deblocked video data is then stored in the frame buffer (notexplicitly shown in FIG. 1) and used for motion compensation by otherframes.

FIG. 2 illustrates an example of filtering 4×4 block boundaries of theluma component in a macroblock according to the H.264 coding standard.The deblocking operation is applied to vertical boundaries in the orderof 211, 212, 213 and 214. The deblocking operation is also applied tohorizontal boundaries in the order of 215, 216, 217 and 218. FIG. 3illustrates an example of filtering block boundaries of a macroblock forthe chroma component. Similarly, the deblocking filter processesvertical boundaries in the order of 311 and 312. Horizontal boundaries313 and 314 are then filtered.

The filtering operation on every block boundary of the luma componentupdates 0 to 3 pixels on each side of the boundary. FIG. 4A shows anexample of filtering a pixel line across a vertical boundary. In thepixel line across the vertical boundary 410, four pixels on each side ofthe vertical boundary, labeled as (p3 _(v), p2 _(v), p1 _(v), p0 _(v),q0 _(v), q1 _(v), q2 _(v), q3 _(v)), respectively are used to derivefilter parameters. Pixels immediately next to the block boundary, i.e.,p0 and q0, are named the first boundary pixels. Similarly, p1 and q1 arenamed the second boundary pixels, p2 and q2 are named the third boundarypixels and p3 and q3 are named the fourth boundary pixels. For filteringthe vertical boundary of the luma component, the deblocking filterupdates at most 3 pixels from the first boundary pixel to the thirdboundary pixel on each side of the vertical boundary depending on theboundary strength assigned to the vertical boundary. For the chromacomponent, no pixel or only the first boundary pixel of each side ofvertical boundary 410 may be modified by the deblocking processdepending on the boundary strength. Therefore, at most 1 pixel on eachside of the vertical boundary may be affected by the deblockingoperation.

FIG. 4B shows an example of filtering a pixel line across horizontalboundary 420. Similar to filtering a vertical boundary as shown in FIG.4A, the deblocking filter may update up to 3 pixels from the firstboundary pixel to the third boundary pixel on each side of thehorizontal boundary for the luma component. In other words, only pixelsp2 _(h), p1 _(h), p0 _(h), q0 _(h), q1 _(h), and q2 _(h) may be modifiedby the deblocking process for the luma component. For the chromacomponent, only one pixel on each side of the boundary, i.e., p0 _(h)and q0 _(h) may be updated.

The number of pixels to be updated for deblocking on each side of ablock boundary is determined based on the boundary strength. Theboundary strength parameter Bs is estimated according to the informationof the current macroblock (MB) to be processed. The information used todetermine Bs includes the Intra/Inter prediction mode information, thecoded block pattern, the motion vector, the pixel values or otherinformation of the MB. The boundary strength parameter Bs(Cx, Cy) forfiltering the chroma block boundary can be derived from the boundarystrength parameter Bs(Yx, Yy) for filtering block boundaries of the lumacomponent in the same MB. The relationship between (Bs(Cx, Cy) andBs(Yx, Yy) can be represented by the following three equations:

Bs(Cx, Cy)=Bs(Yx, Yy),

Yx=subwidthC*Cx, and

Yy=subheightC*Cy,

where Yx and Yy denote the location of the current block boundary of theluma component in x and y directions respectively, and Cx and Cy denotethe locations of the current block boundary of the chroma component in xand y directions respectively. The parameters subwidthC and subheightCare used to map the location of the current block boundary of the chromacomponent to the corresponding location of the current block boundary ofthe luma component.

FIG. 5 illustrates an exemplary diagram to determine Bs for filteringblock boundaries of the luma component according to H.264. For a blockboundary to be filtered, a test is performed regarding whether thesamples to be filtered belong to an Intra coded MB, a slice of SI(Switching I-Picture) or SP (Switching P-Picture) type as shown in step510. If the samples to be filtered is in an Intra coded block or a SI/SPslice, step 520 is performed to determine whether the current blockboundary is a MB boundary. When the current block boundary to beprocessed is also a MB boundary, significant blocking distortion mayexist in the current block boundary. Step 530 is used further todetermine the Bs for the block boundary. In step 530, if any of thefollowing two conditions are met, Bs is set to 4: (1) if the samples tobe filtered are in frame macroblocks; or (2) if (the samples are in amacroblock pair or in a field picture), and the samples are associatedwith a vertical block edge. If neither of the two conditions is met instep 530, the block strength parameter Bs is set to 3. In step 520, whenthe current block boundary is not a MB boundary, Bs is set to 3.

If the samples to be filtered is not in an Intra coded block or a SI/SPslice, a further test is performed in step 521 to determine whether theCoded Block Pattern (CBP) value is equal to 1 (i.e. CBP=1), whichimplies at least one of the two adjacent 4×4 blocks on both sides of thecurrent boundary contains coded coefficients. If the Coded Block Patternvalue is equal to 1, then Bs is 2. When none of the two adjacent 4×4blocks contains coded coefficients (i.e. CBP=0), a further test isperformed in step 531 to determine the value of Bs. In step 531, if anyof the following three conditions is met, Bs is set to 1: (1) the twofirst boundary pixels belong to different macroblock pairs as indicatedby mixedModeEdgeFlag=1; (2) the two adjacent 4×4 blocks on both sides ofthe current boundary have different reference frames or a differentnumber of reference frames as indicated by Ref(p)!=Ref(q); or (3) thetwo adjacent 4×4 blocks on both sides of the current boundary havedifferent motion vector values as indicated by #mv(p)!=#mv(q). If noneof the above three conditions in step 531 is met, a further test isperformed in step 541 to determine the value of Bs. In step 541, if theabsolute difference between the respective horizontal or verticalcomponent of the motion vectors for the two adjacent blocks used isgreater than or equal to 4 in units of quarter luma frame samples (i.e.|mv(p)−mv(q)|>=4(quarter pel)), Bs is set to 1. Otherwise, Bs is set to0.

The filter mode for deblocking is selected based on the boundarystrength of neighboring blocks and the gradient of samples across theboundary. When the current block boundary to be filtered is a MBboundary, the deblocking filter may update at most 3 pixels on each sideof the current block boundary. When the current block to be filtered isnot a MB boundary, the deblocking filter will update less than 3 pixelson each side of the current block boundary.

The decoding method with deblocking operation mentioned above is usuallyimplemented using a single processor or core to decode one slice ofvideo image. However, dual-core processors or multi-core processors arebecoming the trend in personal computer, note book, tablet or smartphoneenvironments. The dual-core processors or multi-core processors would behelpful to fulfill the needed processing power to decode ultra-highdefinition (UHD) video bitstream. Each coded picture/image in UHD can bedivided into at least two independent slices. It is desirable to usedual-core or multi-core processors to perform parallel decoding ofindependent slices or other picture units concurrently. However, thedeblocking process is configured as an in-loop processing, where thedeblocking process of a subsequent adjacent macroblock cannot beperformed until a previous macroblock is deblocked. Due to datadependency on adjacent previous macroblock, a current slice cannot beprocessed until the deblocking process for a previous slice iscompleted. Accordingly, the data dependency associated with thedeblocking process poses as a challenge to decoding based on a dual-coreor multi-core processor.

BRIEF SUMMARY OF THE INVENTION

A method is disclosed for deblocking process in a video decoding systemcomprising a first processing unit and a second processing unit.According to one embodiment of the present invention, the video imagecomprises at least a first region and a second region. The first regionconsists of first blocks and the second region consists of secondblocks. An in-loop filter is applied to first block boundariesassociated with the first blocks of the reconstructed data in the firstregion using the first processing unit. The in-loop filter is applied tosecond block boundaries associated with the second blocks of thereconstructed data in the second region using the second processingunit. The in-loop filter is re-applied to the second block boundariesadjacent to the region edge between the first region and the secondregion after applying the in-loop filter to the first block boundariesadjacent to the region edge. Furthermore, at least a first portion ofsaid applying the in-loop filter to the first block boundaries and asecond portion of said applying the in-loop filter to the second blockboundaries are performed concurrently. The two processing units maycorrespond to two processing cores within one processor chip.

One aspect of the embodiment addresses re-applying the in-loop filter tothe second block boundaries adjacent to the region edge between thefirst and the second regions. Either one of the two processing unit canbe used to re-apply the in-loop filter to the second block boundariesadjacent to the region edge between the first and the second regionsafter filtering the first block boundaries adjacent to the region edge.The filtering operation may be re-applied only to the second blockboundaries in a coding block unit row or column adjacent to the regionedge. Each coding block unit consists of multiple 4×4 sub-blocks. Thein-loop filter requires data samples from two sides of each first blockboundary or each second block boundary.

An apparatus is disclosed for deblocking process in a video decodingsystem comprising a first processing unit and a second processing unit.According to one embodiment of the present invention, the apparatuscomprises an interface unit, a first processing unit and a secondprocessing unit. The interface unit is configured to obtainreconstructed data associated with the video image. The first processingunit is configured to apply an in-loop filter to first block boundariesassociated with first blocks of the reconstructed data in a first regionof the video image. The second processing unit is configured to applythe in-loop filter to second block boundaries associated with secondblocks of the reconstructed data in a second region of the video image.Furthermore, the first processing unit or the second processing unit isfurther configured to re-applying the in-loop filter to one or moresecond block boundaries adjacent to region edge between the first regionand the second region. The operation of re-applying the in-loop filteris performed after applying the in-loop filter to the first blockboundaries adjacent to the region edge. The first processing unit andthe second processing unit are configured to apply the in-loop filter toa first portion of the first block boundaries and a second portion ofthe second block boundaries concurrently. The first processing unit andthe second processing unit may correspond to two processing cores withina processor chip.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an exemplary diagram of video decoding with anin-loop filter.

FIG. 2 illustrates an exemplary filter order of the block boundaries ofthe luma component in a macroblock.

FIG. 3 illustrates an exemplary filter order of the block boundaries ofthe chroma component in a macroblock.

FIG. 4A illustrates an example of boundary pixels and processed pixelson each side of a vertical boundary.

FIG. 4B illustrates an example of boundary pixels and processed pixelson each side of a horizontal boundary.

FIG. 5 illustrates an exemplary flow diagram for determining boundarystrength parameter (Bs).

FIG. 6 illustrates an exemplary decoding architecture with a dual-coreprocessor according to the present invention.

FIG. 7 illustrates an exemplary diagram of video decoding performed inone processing unit according to one embodiment of the presentinvention.

FIG. 8A illustrates an exemplary two-slice image with a straighthorizontal boundary.

FIG. 8B illustrates an example of deblocking the two-slice image with astraight horizontal boundary using a dual-core decoder.

FIG. 9A illustrates an exemplary two-slice image with a non-alignedhorizontal boundary.

FIG. 9B illustrates an example of deblocking the two-slice image with anon-aligned horizontal boundary using a dual-core decoder.

FIG. 10A illustrates an example of filtering process for the firsthorizontal boundary of the luma component according to one embodiment ofthe present invention.

FIG. 10B illustrates an example of filtering the second horizontalboundary of the luma component according to one embodiment of thepresent invention.

FIG. 10C illustrates an example of filtering the third horizontalboundary of the luma component according to one embodiment of thepresent invention.

DETAILED DESCRIPTION OF THE INVENTION

In the present invention, a decoding system uses two processing units tofilter two regions of a video image or frame according to oneembodiment. The two regions are named as a first region and a secondregion. The 4×4 blocks in the first region are named as the first blocksand the boundaries between the first blocks are named as the first blockboundaries. Similarly, the 4×4 blocks of the second region are names asthe second blocks and the boundaries between the second blocks are namedas the second block boundaries.

If the two regions are filtered independently without taking intoconsideration of data dependency across the region edge, blockingdistortion between the two regions will not be filtered. The deblockingprocess for the second region can be started substantially at the sametime as the deblocking process for the first region according to thepresent invention. The deblocking process for the second region may alsobe started earlier or later than the deblocking process for the firstregion according to the present invention to take advantage of the dualprocessing units. In general, as long as a portion of the first regionand a portion of the second region are deblocked concurrently, itreduces the processing time compared to a single processing unit. Thedata samples not-yet deblocked in the first region adjacent to theregion edge between these two regions may be used to filter the secondblock boundaries in the second region adjacent to the region edge.Errors may be introduced for filtering the second block boundariesadjacent to the region edge between these two regions by using dummydata since the deblocked samples are not yet available for boundarypixels in the first region. After filtering the first block boundariesin the first region, the second block boundaries adjacent to the regionedge between these two regions can be deblocked by either one of the twoprocessing units to reduce the possible errors. The yet-to-be filteredboundary samples can be used as the dummy data. However, pre-defineddata may also be used as the dummy data.

According to one embodiment of the present invention, a method ofapplying in-loop filter (e.g., deblocking filter) to the blockboundaries of the video image using a first processing unit and a secondprocessing unit is disclosed. The reconstructed data associated with thevideo image is obtained from the current processing unit of the systemor one or more external devices. The external device may be an externalprocessing unit, another processing unit of the system or a memorydevice etc. The in-loop filter of the decoder is applied to the firstblock boundaries associated with the first blocks of the reconstructeddata in the first region using the first processing unit. The in-loopfilter is also applied to the second block boundaries associated withthe second blocks of the reconstructed data in the second region usingthe second processing unit. After applying the in-loop filter to thefirst block boundaries adjacent to region edge between the first regionand the second region, the in-loop filter is re-applied to the secondblock boundaries adjacent to the region edge. Furthermore, at least aportion of the first block boundaries and a portion of the second blockboundaries are deblocked concurrently according to the presentinvention. The second block boundaries adjacent to the region edge maycorrespond to the second block boundaries in the coding block unitsadjacent to the region edge. Each coding block unit consists of multiplesecond block boundaries horizontally and vertically. The coding blockunit may correspond to the macroblock (MB) used in H.264 or the codingtree block (CTB) used in HEVC, or the image processing unit used inother coding standards.

According to another embodiment of the present invention, the in-loopfilter is applied to the second block boundaries from the second blockboundaries which can be filtered without using the dummy data. After thein-loop filter is applied to the first block boundaries adjacent to theregion edge, the in-loop filter is applied to the second blockboundaries adjacent to the region edge. In this embodiment, the in-loopfilter may be applied only once to the second block boundaries adjacentto the region edge.

FIG. 6 illustrates an exemplary dual-core decoder according to thisembodiment. The decoder comprises two processing units which are denotedas VDEC Core0 610 and VDEC Core1 620, respectively. These two processingunits may correspond to two cores within one processor chip. Each ofthese two processing cores is used as a processing unit to decode andfilter one of the two adjacent regions in one video image and outputsthe filtered result to memory (not shown in FIG. 6) via memory accesscontrol unit 630. Each of the two adjacent regions consists of one ormore slices and each slice consists of one or more coding block units.Memory access control unit 630 manages the access of filtered results.For example, VDEC Core0 610 is used to perform filtering on the firstregion of the video image and VDEC Core1 620 is used to performfiltering on the second region. The filtered results of the first blockboundaries adjacent to the region edge between these two regions arestored in memory and the filtered results are read back for re-applyingthe deblocking filter to the second region data adjacent to the regionedge. The memory access to the filtered data is managed by memory accesscontrol unit 630. The filtered results may also be used for motioncompensation by other frames.

FIG. 7 illustrates an exemplary decoding flow of each processing coreincorporating in-loop filtering to perform the deblocking operation. Thecoded data of a picture or image is provided to VLD (variable lengthdecoding) 710 for recovering the coded symbols such as residues andother coded information. Then inverse scan (IS) 721, inversequantization (IQ) 722, inverse transform (IT) 723 are applied in turn torecover the residues. For Intra or Inter reconstruction, the residuesare added back to the prediction data obtained from Intra/Interselection 730. Intra/Inter selection 730 receives Intra prediction datafrom Intra prediction 740 or receives Inter prediction data from motioncompensation 752. Image reconstruction is performed by adding residuesto the respective prediction data from Intra prediction 740 or motioncompensation 752 using adder 724. The reconstructed data is thenprocessed by deblocking filter 725 across block boundaries to reduceblocking distortion. The filtered results are stored in decoded picturebuffer 760 for use of motion compensation by other frames. Deblockingfilter 725 is operated as an in-loop filter since the deblocking processis within the reconstruction loop. For Intra prediction, thereconstructed data of the current picture is provided to Intraprediction 740 for the Intra reconstruction of other blocks in the samepicture. In order to recover the Inter prediction data, motioninformation such as motion vector (MV) are parsed from coded bitstreamusing VLD 710. Motion vector is then determined using MV calculation 751to determine the motion vector related to the current coding block unitor units. Motion compensation 752 derives the Inter prediction data forthe coding block unit or units based on a previously reconstructedpicture data stored in decoded picture buffer 760 and the associatedmotion vector.

According to one embodiment of the present invention, each of the twoprocessing cores filters the block boundaries from the beginning of thecorresponding region. One processing unit named as the first processingunit applies the deblocking process to the first block boundaries fromthe beginning of the first region to the second block boundariesadjacent to the region edge between the first and the second region.Another processing unit named as the second processing unit filters thesecond block boundaries from the beginning to the end of the secondregion. According to another embodiment of the present invention, thefirst processing unit filters only the first block boundaries from thebeginning to the end of the first region. The second processing unitperforms deblocking only on the second block boundaries from thebeginning to the end of the second region. After receiving the filteredresult of the first block boundaries adjacent to the region edge betweenthese two regions, the second processing unit applies or re-applies thedeblocking filter on the second block boundaries adjacent to the regionedge.

FIGS. 8A and 8B illustrate an example of filtering a two-region videopicture with a dual-core decoder according to an embodiment of thepresent invention. Video picture 800 consists of two regular regionswhich are denoted as slice 1 and slice 2, as shown in FIG. 8A. Theregion edge between slice 1 and slice 2 is a straight-line edge and eachslice consists of one or more macroblocks. The beginning of slice 1 isrepresented by beginning 811 and the beginning of slice 2 is representedby beginning 821. To filter the block boundaries between 4×4 blocks invideo picture 800, the first processing core applies deblocking filterto block boundaries from left to right and from top to bottom of slice1. Similarly, the second processing core applies deblocking filter toblock boundaries from left to right and from top to bottom of slice 2.Furthermore, the first processing core continues the deblocking processand applies deblocking filter to block boundaries of one MB row in slice2 adjacent to the region edge. As shown in FIG. 8B, the deblockingprocess in the first processing core starts from the beginning location811 of slice 1 and ends at the end of MB row (indicated by 812) which isone MB row beyond slice 1. The second processing core performsdeblocking process only to slice 2 from the beginning location 821 ofslice 2 to the end of slice 2. The second processing core initiallyapplies deblocking filter to the MB row (which is marked with theoblique lines) at the top of slice 2 which is adjacent to the regionedge and the first processing core re-applies the deblocking process tothe MB row at the top of slice 2. As mentioned before, the secondprocessing core may re-apply the deblocking process to the MB row inslice 2 and adjacent to the region edge after the second processing corefinishes the deblocking process of slice 2. In this situation, the firstprocessing core applies the deblocking process only to slice 1 and thesecond processing core applies the deblocking process only to slice 2.The second processing core may re-apply the deblocking process from thebeginning location (821) to the ending location (812) after finishingthe deblocking process of slice 1.

FIGS. 9A and 9B illustrate another example of deblocking a two-regionvideo picture using a dual-core decoder according to an embodiment ofthe present invention. Video picture 900 consists of two irregular shaperegions which are denoted as slice 1 and slice 2, as shown in FIG. 9A.The beginning of slice 1 is represented by beginning location 911 andthe beginning of slice 2 is represented by beginning location 921.Similar to the example shown in FIGS. 8A and 8B, the first processingcore applies the deblocking process to the first block boundaries inslice 1 from left to right and from top to bottom of slice 1 and thesecond processing core applies deblocking filter to block boundariesfrom left to right and from top to bottom of slice 2. Furthermore, thefirst processing core continues the deblocking process and appliesdeblocking filter to block boundaries of one MB row and one additionalMB in slice 2 adjacent to the region edge. Since the region edge has anirregular shape, the MB row in slice 2 adjacent to the region edge inthis disclosure corresponds to the MBs in slices that are immediatelynext to the region edge, and the additional MB is immediately next tothe last MB in the MB row. The end of the additional MB is shown byending location 912. Thus, the first processing core applies thedeblocking process from beginning location 911 to ending location 912and the second processing core applies the deblocking process frombeginning 921 to the end of slice 2. As mentioned before, the secondprocessing core may re-apply the deblocking process to the MB row andthe additional MB in slice 2 adjacent to the region edge after thesecond processing core finishes the deblocking process of slice 2. Inthis situation, the first processing core performs the deblockingprocess only to slice 1 from beginning location 911 to the end of slice1 and the second processing core performs the deblocking process frombeginning 921 to the end of slice 2. The second processing core mayre-apply the deblocking process from beginning location 921 to endinglocation 912 after finishing the deblocking process of slice 1.

In the one embodiment of the present invention, the second blockboundaries adjacent to the region edge between the first and the secondregion are filtered twice. The second block boundaries, which should befiltered a second time to correct erroneous filtered data due to dummydata at a MB row or a MB column adjacent to the region edge. Therefore,the filter operation on the second region can be re-applied to only oneMB row or column adjacent to the region edge.

FIGS. 10A to 10C illustrate an example of deblocking filter applied tothe second block boundaries of the luma component adjacent to the regionedge according to the present invention. This example is used to explainerroneous filtered data adjacent to the region edge due to the use ofdummy data. In this example, it is the first time to apply deblockingfilter to the second block boundaries adjacent to the region edgebetween the first region and the second region. Therefore, thedeblocking filter is applied to the second block boundaries withoutreceiving the filtered result of the first block boundaries adjacent tothe region edge.

FIG. 10A illustrates an example of deblocking filter applied to thehorizontal block edge (1010) adjacent to the region edge between thefirst and the second region. Horizontal block edge 1010 consists ofmultiple second block boundaries, as shown by edge 1010. Since eachhorizontal block covers 4 pixels, each horizontal block edge maycorrespond to multiple horizontal block boundaries. The value of Bs canbe determined according to traditional methods, such as the methodillustrated with FIG. 5. When processing horizontal block edge (1010),up to 3 pixels (i.e., pixels in pixel lines 1011, 1012 and 1013)adjacent to the region edge may be updated in the second region side.However, since the neighboring samples on the top side of the regionedge are not available yet, dummy data is used. Therefore, thedeblocking filter applied to the horizontal block edge 1010 may resultin at most three erroneous pixel lines (i.e., lines 1011, 1012 and1013).

FIG. 10B illustrates the scenario of deblocking the second horizontalblock edge from the region edge between the first region and the secondregion. The filter mode of horizontal block edge 1020 is determinedbased on the boundary strength and the gradient of samples across theedge. Since horizontal block edge 1020 is not a MB boundary, the Bs forfiltering horizontal block edge 1020 is no more than 3. Therefore, atmost 2 pixels adjacent to the second horizontal block edge may bemodified by the deblocking process. Accordingly, the erroneous filtereddata may occur up to pixel lines 1015 and 1016 after deblocking thesecond horizontal edge from the region edge.

FIG. 10C illustrates the scenario of deblocking the third horizontalblock edge (1030) from the region edge between the first and the secondregion. Four pixels on each side of the third horizontal block edge arelabeled as (p3, p2, p1, p0, q0, q1, q2, q3). For the third horizontalblock edge, Bs for filtering horizontal block edge 1030 is equal to 3 orless since the block boundary is not a MB boundary. The filter strength,Bs for edge 1030 is determined based on p1, p0, q0 and q1. Since thereis no erroneous data among p1, p0, q0 and q1, the boundary strength canbe correctly determined for the third horizontal block boundaries.However, the filtering of pixel p1 uses four pixels, i.e., p2, p1, q0and q0 (as indicated by 1031). Since pixel p2 may be erroneous duringdeblocking the second horizontal block edge, the deblocking process forblock boundaries 1030 may result in erroneous filtered p1 (i.e., line1017). Nevertheless, filtered results for p0 and q0 (as indicated by1032) and q1 (as indicated by 1033) are all correct. In other words, theerroneous filtered results due to the use of the dummy data in the firstregion can propagated at most to line 1017. The filter operation appliedto fourth horizontal block edge will result in correct results. Thus,the error caused by using dummy data of the first region to filter thesecond block boundaries of the luma component is propagated to up to 7pixel lines. In other words, erroneous data caused by the use of dummydata of first region will not affect data in the MB below the MB rowadjacent to the region edge. Accordingly, only the MB row in region 2and adjacent to the region edge needs to be processed by the deblockingfilter again. Furthermore, only partial data is affected by the use ofdummy data in region 1. Therefore, only the affected data need to bedeblocked again.

To filter the second block boundaries of the chroma component, only twopixels are used for modifying each pixel. Since only one pixel may beupdated for filtering the second block boundaries of the chromacomponent, the error for filtering one edge cannot be propagated toanother edge. Therefore, at most seven pixel lines from the region edgemay be erroneous due to the use of dummy data to filter the region edgein the luma component. To filter the region edge in the chromacomponent, at most one pixel line may be erroneous as only one pixelline adjacent to the region edge may be updated for deblocking.

The deblocking filter can be re-applied to the second block boundarieswithin one coding block unit row or column adjacent to the region edgebetween two regions according to one embodiment of the invention. Thecoding block unit row or column contains more than seven pixel lines inthe luma component or more than one pixel line in chroma component.Thus, possible error introduced by using of dummy data to filter thesecond block boundaries adjacent to the region edge is corrected.

According to another embodiment of the present invention, the in-loopfilter is applied to the second block boundaries adjacent to the regionedge after obtaining the deblocked data of the first block boundariesadjacent to the region edge. The deblocking process of the second regionis started from the second block boundaries which can be filteredwithout using dummy data. For example, the second processing unitfilters the second boundaries from the eighth pixel line adjacent to theregion edge in luma component or from the second pixel line adjacent tothe region edge. Therefore, no error is introduced for filtering thesecond block boundaries adjacent to the region edge.

Using two processing units to filter two regions of the video image isonly one embodiment of the present invention. According to the presentinvention, the decoding system can use a multi-core processor fordeblocking the video image or frame. The multi-core processor maycomprise more than 2 processing units, such as 3 cores, 4 cores, etc.For example, three processing units can be used for deblocking threeregions of the video image when the video image comprises three regions.Each processing unit is individually used for deblocking onecorresponding region of the video image. During deblocking blockboundaries adjacent to each region edge between two regions, errors maybe introduced by using dummy data for deblocking. To prevent thepropagation of the errors, the in-loop filter is re-applied to one ormore block boundaries which are adjacent to one region edge and maycontain errors introduced by using dummy data. The in-loop filter may bere-applied by each processing unit after deblocking the correspondingregion.

The above description is presented to enable a person of ordinary skillin the art to practice the present invention as provided in the contextof a particular application and its requirement. Various modificationsto the described embodiments will be apparent to those with skill in theart, and the general principles defined herein may be applied to otherembodiments. Therefore, the present invention is not intended to belimited to the particular embodiments shown and described, but is to beaccorded the widest scope consistent with the principles and novelfeatures herein disclosed. In the above detailed description, variousspecific details are illustrated in order to provide a thoroughunderstanding of the present invention. Nevertheless, it will beunderstood by those skilled in the art that the present invention may bepracticed.

Embodiment of the present invention as described above may beimplemented in various hardware, software codes, or a combination ofboth. For example, an embodiment of the present invention can be acircuit integrated into a video compression chip or program codeintegrated into video compression software to perform the processingdescribed herein. An embodiment of the present invention may also beprogram code to be executed on a Digital Signal Processor (DSP) toperform the processing described herein. The invention may also involvea number of functions to be performed by a computer processor, a digitalsignal processor, a microprocessor, or field programmable gate array(FPGA). These processors can be configured to perform particular tasksaccording to the invention, by executing machine-readable software codeor firmware code that defines the particular methods embodied by theinvention. The software code or firmware code may be developed indifferent programming languages and different formats or styles. Thesoftware code may also be compiled for different target platforms.However, different code formats, styles and languages of software codesand other means of configuring code to perform the tasks in accordancewith the invention will not depart from the spirit and scope of theinvention.

The invention may be embodied in other specific forms without departingfrom its spirit or essential characteristics. The described examples areto be considered in all respects only as illustrative and notrestrictive. The scope of the invention is therefore, indicated by theappended claims rather than by the foregoing description. All changeswhich come within the meaning and range of equivalency of the claims areto be embraced within their scope.

1. A method of decoding a video image using a first processing unit anda second processing unit, wherein the video image comprises a firstregion and a second region, the method comprising: obtainingreconstructed data associated with the video image; applying in-loopfilter to first block boundaries associated with first blocks of thereconstructed data in the first region using the first processing unit;applying the in-loop filter to second block boundaries associated withsecond blocks of the reconstructed data in the second region using thesecond processing unit; and re-applying the in-loop filter to one ormore second block boundaries adjacent to region edge between the firstregion and the second region after applying the in-loop filter to thefirst block boundaries adjacent to the region edge; and wherein at leasta first portion of said applying the in-loop filter to the first blockboundaries and a second portion of said applying the in-loop filter tothe second block boundaries are performed concurrently.
 2. The method ofclaim 1, wherein said re-applying the in-loop filter to the second blockboundaries adjacent to the region edge is performed using the firstprocessing unit or the second processing unit.
 3. The method of claim 1,wherein the first processing unit and the second processing unitcorrespond to two processing cores within a processor chip.
 4. Themethod of claim 1, wherein the second block boundaries adjacent to theregion edge that the in-loop filter is re-applied correspond to thesecond block boundaries in a second coding block unit row or a secondcoding block unit column along the region edge, wherein each secondcoding block unit consists of multiple second blocks horizontally andvertically.
 5. The method of claim 1, wherein the in-loop filterrequires data samples from two sides of each first block boundary oreach second block boundary.
 6. The method of claim 1, wherein the firstregion consists of one or more first slices of the video image, whereineach first slice consists of one or more coding block units.
 7. Themethod of claim 1, wherein the second region consists of one or moresecond slices of the video image, wherein each second slice consists ofone or more coding block units.
 8. An apparatus for decoding a videoimage, wherein the video image comprises a first region and a secondregion, the apparatus comprising: an interface unit to obtainreconstructed data associated with the video image; a first processingunit configured to apply an in-loop filter to first block boundariesassociated with first blocks of the reconstructed data in the firstregion; a second processing unit configured to apply the in-loop filterto second block boundaries associated with second blocks of thereconstructed data in the second region; and wherein the firstprocessing unit or the second processing unit is further configured tore-applying the in-loop filter to the second block boundaries adjacentto region edge between the first region and the second region, afterapplying the in-loop filter to one or more first block boundariesadjacent to the region edge, and wherein the first processing unit andthe second processing unit are configured to apply the in-loop filter toa first portion of the first block boundaries and a second portion ofthe second block boundaries concurrently.
 9. The apparatus of claim 8,wherein the first processing unit and the second processing unitcorrespond to two processing cores within a processor chip.